package com.gidgabs.modules.api.service;

import com.gidgabs.common.utils.Assist;
import com.gidgabs.common.utils.ReturnJson;
import com.gidgabs.dto.TbProductDto;
import com.gidgabs.modules.entity.TbProductEntity;
import com.gidgabs.modules.entity.TbUser;

import java.util.List;
import java.util.Map;

/**
 * 产品表
 * 
 * @author lanyonglin
 * @email www.baidu.com
 * @date 2018-07-02 11:03:07
 */
public interface TbProductService {
	
	TbProductEntity queryObject(Integer productId);

	TbProductEntity queryObject(TbProductEntity productEntity);
	
	List<TbProductEntity> queryList(Map<String, Object> map);
	
	int queryTotal(Map<String, Object> map);
	
	void save(TbProductEntity product);
	
	void update(TbProductEntity product);

	void updateBatch(Integer[] productIds);

	void delete(Integer productId);
	
	void deleteBatch(Integer[] productIds);

	/**
	 * 根据对象查询列表
	 *
	 * @param product
	 * @return
	 */
	List<TbProductEntity> selectTbProductEntity(TbProductEntity product);

	/**
	 * 通过TbProduct的id获得TbProduct对象
	 *
	 * @param id
	 * @return
	 */
	TbProductEntity selectTbProductById(Integer id);

	/**
	 * 查询广告列表 根据类型
	 * @param pageSize
	 * @param pageNo
	 * @param fromTypeId
	 * @return
	 */
	ReturnJson<TbProductDto> queryAdvertiseList(Integer pageSize, Integer pageNo, Integer fromTypeId);

	/**
	 * 根据产品code 查询对应的转发人数
	 * @param productCode
	 * @return
	 */
	int selectForwardNumber(String productCode);

	/**
	 * 查询我的产品列表
	 *
	 * @param pageSize
	 * @param pageNo
	 * @param tbUser
	 * @return
	 */
	ReturnJson<TbProductDto> queryMyProductList(Integer pageSize, Integer pageNo, TbUser tbUser);
}
